JS Is Weird
だいたい最初のバージョンが10日くらいで作られたのに下位互換性を保ってるのが原因 typeof null = "object" 綾坂こと.icon
初期のバグがそのまま仕様になっちゃってる
Object.prototype.toString.call()あたりを使ったほうが直感に合ってるかもしれない
[1, 2, 3]+[4, 5, 6]
[1,2,3,4,5,6](Python,ruby)模範解答
普通に考えたらこうですよね
「Number, Boolean, null, undefined(, BigInt)は加算、それ以外は文字列結合」。うん、簡単だね!!() 綾坂こと.icon
btoa("たっかー")
btoaは、文字列(Latin1 only)をBase64に変換する関数です
Latin1 onlyになった理由:レガシー実装
実行結果:エラーになります
MDNのほうが短いbsahd.icon
code:mdn.js
function base64ToBytes(b64){const bS = atob(b64);return Uint8Array.from(bS, (m) => m.codePointAt(0));}
function bytesToBase64(bs){const bS = Array.from(bs, (bt) => String.fromCodePoint(bt),).join(""); return btoa(bS);}
// 使用方法
bytesToBase64(new TextEncoder().encode("a Ā 𐀀 文 🦄")); // "YSDEgCDwkICAIOaWhyDwn6aE"
new TextDecoder().decode(base64ToBytes("YSDEgCDwkICAIOaWhyDwn6aE")); // "a Ā 𐀀 文 🦄"
私のは任意データを変換可能にするためにごちゃごちゃやってるので、テキストしか使わないなら↑のほうがいい綾坂こと.icon
Javascriptも「完全な下位互換性」を捨てた新バージョンが必要な気がするbsahd.icon
python2がpython3で大きく進化したように
それほどの互換性の捨て方ではないが
新バージョンを使う場合は厳格モードみたいに宣言する? #include <stdio.h>並みのおまじないになりそう
"ES2020";みたいなイメージ?
一応、やばい機能には代替が開発されている印象綾坂こと.icon
今やってるやつだとTemporal(Dateの代替)とか
日付の内部表現はUTCのUnixtimeだけでいいのでは?bsahd.icon
シリアライズしやすいし